package com.bjsxt.userscenter.common.util;

import java.util.Map;
import java.util.Random;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.springframework.stereotype.Component;

/**
 * 正则表达式
 * @author wangshSxt
 *
 */
@Component("regexUtil")
public class RegexUtil
{
	/* 正则表达式*
	 * 
	 */
	private String pattern_$="(\\$\\{)(\\w+)(\\})";
	
	
	/**
	 * 生成随机数
	 * @param length	指定长度
	 * @return	返回随机数
	 */
	public String proccedStr(int length)
	{
		StringBuffer sb = new StringBuffer();
		Random random = new Random();
		for(int i = 0 ; i < length ; i ++)
		{
			int randInt = random.nextInt(ConstatFinalUtil.ALLSTR.length());
			char ch = ConstatFinalUtil.ALLSTR.charAt(randInt);
			sb.append(ch);
		}
		return sb.toString() ; 
	}
	/**
	 * 将原始字符串中的${},替换为map中的值，${} 中的字符串和map的键一致
	 * @param souStr : test${email}_aaa
	 * @param paramsMap : key:email  值：test@sina.com
	 * @return testtest@sina.com_aaa
	 */
	public String replace$(String souStr,Map<String,String> paramsMap)
	{
		StringBuffer sb =new  StringBuffer();
		/* 编译的过程*/
		Pattern pattern = Pattern.compile(pattern_$);
		/*将字符串按照正则表达式匹配*/
		Matcher matcher = pattern.matcher(souStr);
		/*boolean flag = matcher.matches();
		ConstatFinalUtil.LOGGER.info("---匹配结果---"+flag);*/
		while(matcher.find())
		{
			String res = matcher.group(2);
			//ConstatFinalUtil.LOGGER.info("----"+res+"--"+paramsMap.get(res));
			if(paramsMap.get(res) !=null)
			{
				matcher.appendReplacement(sb, paramsMap.get(res));
			}
		}
		/*把最后的尾巴放到字符串中
		 * */
		matcher.appendTail(sb);
		return sb.toString();
	}
}
